package com.yl.student.ex;

import com.yl.student.bean.dto.ExceptionInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@Slf4j
@ControllerAdvice
public class ExAdvice {
    /**
     * 这里统一拦截Exception，也可以对异常进行精准的拦截
     *  @ExceptionHandler：声明一个或多个类型的异常，当符合条件的Controller抛出这些异常
     *  之后将会对这些异常进行捕获，然后按照其标注的方法的逻辑进行处理，从而改变返回的视图信息
     *
     *  请求方式不正确，也会被拦截
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public ExceptionInfoDto handleEx(Exception ex){
        log.error("统一异常处理:",ex);
        return new ExceptionInfoDto("未通过","500",ex.toString(),"NULL");
    }
}
